iT邦幫忙

2023 iThome 鐵人賽

DAY 15
0
自我挑戰組

研究visual studio+MSSQL各項技術系列 第 15

LINQ查詢範例(一)查詢select

  • 分享至 

  • xImage
  •  

例一:
本回使用的資料表如下:
https://ithelp.ithome.com.tw/upload/images/20230930/20163340DkIiSl3n0V.png

以下程式先用sql查詢存入datatable再用linq取值

namespace WindowsFormsApp3
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            // 連接字串
            string connectionString = "Data Source=127.0.0.1,1433;Initial Catalog=Animal;Integrated Security=True";

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();

                // 創建一個 SQL 查詢SELECT [id],[name],[color] FROM [Animal].[dbo].[Animal]
                string sqlQuery = "SELECT [id], [name],[color] FROM [Animal].[dbo].[Animal]";

                // 使用 SqlDataAdapter 執行查詢並將結果存入一個 DataTable
                SqlDataAdapter adapter = new SqlDataAdapter(sqlQuery, connection);
                DataTable dataTable = new DataTable();
                adapter.Fill(dataTable);

                // 使用 LINQ 查詢 DataTable
                var query = from row in dataTable.AsEnumerable()
                            select new
                            {
                                id = row.Field<int>("id"),
                                name = row.Field<string>("name"),
                                color = row.Field<string>("color")
                            };

                Console.WriteLine("Query Result:");
                foreach (var result in query)
                {
                    Console.WriteLine($"ID: {result.id}, Name: {result.name}, color: {result.color}");
                }
            }
        }
    }

    // 定義 Entity Framework DbContext
    class YourDbContext : System.Data.Entity.DbContext
    {
        public YourDbContext(SqlConnection connection) : base(connection, contextOwnsConnection: false) { }

        public System.Data.Entity.DbSet<Animal> Animals { get; set; }
    }

    // 定義 Animal 實體類別,對應到資料庫的 Animal 表格
    class Animal
    {
        public int id { get; set; }
        public string name { get; set; }
    }
}

輸出結果:

Query Result:
ID: 1, Name: 狗, color: 黑
ID: 2, Name: 馬, color: 黑
ID: 3, Name: 羊, color: 白

例二:
linq的資料來源可以是各種類型的集合,因此上述的例子可以用list類別重寫
以下這個例仔是先建置list類別資料,再用linq取值:

namespace WindowsFormsApp3
{
    public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();
        }

        private void Form3_Load(object sender, EventArgs e)
        {
            // 建立包含 Animal 物件的 List
            List<Animal> animals = new List<Animal>
            {
                new Animal { Id = 1, Name = "狗", Color = "黑" },
                new Animal { Id = 2, Name = "馬", Color = "黑" },
                new Animal { Id = 3, Name = "羊", Color = "白" },
            };

            // 使用 LINQ 查詢並選取 Id 和 Name 列的值
            var query = from animal in animals
                        select new
                        {
                            Id = animal.Id,
                            Name = animal.Name,
                            Color = animal.Color
                        };

            Console.WriteLine("Query Result:");
            foreach (var result in query)
            {
                Console.WriteLine($"ID: {result.Id}, Name: {result.Name}, Color: {result.Color}");
            }
        }

        // 定義 Animal 類別,模擬資料集合中的 Animal 物件
        public class Animal
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public string Color { get; set; }
        }
    }
}

輸出結果同上:

Query Result:
ID: 1, Name: 狗, color: 黑
ID: 2, Name: 馬, color: 黑
ID: 3, Name: 羊, color: 白

如果要查詢黑色毛皮的動物,要在以下的位置加入where animal.Color == "黑",就能只查詢黑色毛皮的動物

            // 使用 LINQ 查詢並選取 Id 和 Name 列的值
            var query = from animal in animals
                        where animal.Color == "黑"
                        select new
                        {
                            Id = animal.Id,
                            Name = animal.Name,
                            Color = animal.Color
                        };

以下是查詢結果
以上就是本回的教學

Query Result:
ID: 1, Name: 狗, Color: 黑
ID: 2, Name: 馬, Color: 黑

上一篇
EntityFramework介紹、安裝EntityFramework、LINQ介紹
下一篇
LINQ查詢範例(二)排序Orderby
系列文
研究visual studio+MSSQL各項技術30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言